package com.songshuai.sales.tool.dao.tool;

import com.songshuai.sales.tool.dto.request.sop.ListReqDto;
import com.songshuai.sales.tool.dto.response.sop.ListResDto;
import com.songshuai.webapi.baseapi.model.sales.Sop;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * 此类为[基础代码]自动生成，已经拥有基本的增删改成操作
 * <其他请自行扩展>
 * @Author: 松鼠AI
 * @Date: 2019-03-11 16:40:41
 */
public interface SopMapper{

    /**
     * 根据主键查询单一记录
     * @param sopId
     * @return Sop
     */
    Sop selectByPrimaryKey(String sopId);

    /**
     * 根据条件查询多条记录
     * @param entity
     * @return List<Sop>
     */
    List<Sop> selectByEntityList(Sop entity);

    /**
     * 根据条件查询单条记录
     * @param entity
     * @return Sop
     */
    Sop selectByEntity(Sop entity);

    /**
     * 根据条件查询ID
     * @param entity
     * @return String
     */
    String selectById(Sop entity);

    /**
     * 根据条件查询ID集合
     * @param entity
     * @return List<String>
     */
    List<String> selectByIds(Sop entity);

    /**
     * 插入单条记录（全字段）
     * @param entity
     * @return int
     */
    int insert(Sop entity);

    /**
     * 插入单条记录（字段为空则不添加）
     * @param entity
     * @return int
     */
    int insertSelective(Sop entity);

    /**
     * 根据主键修改
     * @param entity
     * @return int
     */
    int updateByPrimaryKey(Sop entity);

    /**
     * 批量插入
     * @param entitys
     * @return int
     */
    int insertBatch(List<Sop> entitys);

    /**
     * 根据主键批量修改
     * @param entitys
     * @return int
     */
    int updateBatch(List<Sop> entitys);

    /**
     * 根据主键删除单条记录
     * @param sopId
     *
     */
    void deleteByPrimaryKey(String sopId);

    /**
     * 根据主键批量删除
     * @param list
     * @return int
     */
    int deleteBatch(List<String> list);

    /**
     * 根据某些条件删除
     * @param entity
     * @return int
     */
    int deleteByEntity(Sop entity);


    /*搜索sop*/
    List<ListResDto> selectSopList(ListReqDto listReqDto);
    /*主子标签*/
    String selectSubLabelSql(Integer labelId);

    Sop selectTitleByEntity(Sop entity);

    /**
     * 更新sop内容的主分类
     * @param mainType
     * @param subType
     */
    void updateSopMainType(@Param("mainType") String mainType, @Param("subType") String subType);

    /**
     * 查询分类关联的sop内容总数
     * @param typeId
     * @return
     */
    Integer querySopCountByTypeId(String typeId);
    
}